package com.liqw;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.client.codec.StringCodec;
import org.redisson.codec.JsonJacksonCodec;
import org.redisson.config.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.http.codec.json.Jackson2JsonDecoder;

@Configuration
public class RedissonCustomConfig {

    @Bean(destroyMethod = "shutdown")
    public RedissonClient redissonClient() {
        // 1. 创建一个 Config 对象
        Config config = new Config();

        // 配置 Jackson2JsonCodec（自动处理类型转换）
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS); // 避免空对象序列化报错
        config.setCodec(new JsonJacksonCodec(objectMapper));

        // 3. 配置 Redis 连接信息
        // 你可以根据你的实际情况选择 single server, master-slave, cluster 等模式
        // 以下是单节点模式的示例
        config.useSingleServer()
                .setAddress("redis://127.0.0.1:6379") // 替换为你的 Redis 地址
                .setPassword("123456")   // 如果你的 Redis 有密码，请填写
                .setDatabase(0);                      // 选择要连接的数据库索引

        // 4. 返回一个新的 RedissonClient 实例
        return Redisson.create(config);
    }
}